#ifndef LINKED_LIST_COMMON_H
#define LINKED_LIST_COMMON_H

typedef struct node
{
    void *data;
    struct node *prev;
    struct node *next;

}Node;

typedef struct linked_list
{
    Node *head;
    Node *tail;
    int size;

}Linked_list;

Node*create_node(void*data);

void init_linked_list(Linked_list*list);


//头中尾插入节点
void prepend(Linked_list*list,void *data);
void insert_after(Linked_list*list,void*data);
void append(Linked_list*list ,void*data);


void print_intlinked_list(Linked_list*list);
int compare(void*,void*);

Node*search(Linked_list*list,void *data,int (*compare)(void*,void*));
void clear_linked_list(Linked_list*list);

//修改删除
void updata_node_data(Node*node,void*data);
void delete_node(Linked_list*list,Node*node);
#endif